Method and apparatus for processing video

ABSTRACT

Provided is an apparatus for processing a video. The apparatus for processing a video includes an image receiving module that is configured to receive encoded data; a filtering module that is configured to filter an image frame reconstructed from the encoded image; a block dividing module that is configured to divide the filtered image frame into a plurality of blocks; a compression module that is configured to selectively compress each of the plurality of blocks by determining each compression method for the blocks, package the compressed or uncompressed plurality of blocks into a predetermined unit; and a frame buffer memory that is configured to record the packaged data and the lookup table information.

TECHNICAL FIELD

The present invention relates to a method and apparatus for processing a video, and more particularly, a method and apparatus for processing a video, capable of improving bandwidth efficiency of a frame buffer memory.

BACKGROUND ART

The present invention results from a research, which has been carried out as a part of work which was supported by ICT R&D program of MSIP/IITP [10043450, Development of Video Server Technology for Capturing, Editing, Ingesting, and Transmitting 8K and S3D 4K UHD Contents], and supported by the Technology Innovation Program (10049498, 4K UHD HEVC/VP9 SoC for Streaming Smart Device) funded by the Ministry of Trade, Industry and Energy (MOTIE, KOREA).

Recent improvement of video processing algorithms allows a video processing apparatus to process much larger-scale images.

Specifically, with need for ultrahigh definition (UHD), existing video compression techniques have difficulty in accommodating sizes of storage media and bandwidths of transfer media. Accordingly, a novel standard for compression of UHD video is needed. As a result, high efficiency video coding (HEVC) has completely been standardized on January in 2013. The HEVC may be available for a video stream serviced through networks, such as the Internet, 3G, long term evaluation (LTE), etc, in which not only UHD but also full high definition (FHD) or high definition (HD) videos can be compressed in accordance with HEVC.

A UHD TV is considered to mainly provide 4K (4096×2304 pixels) UHD at 30 frames per second (fps) in the short term, while the number of pixels to be processed per second is expected to continuously increase to 4K 60 fps/120 fps, 8K 30 fps/60 fps, and the like. A bandwidth on demand per frame for a bidirectional frame prediction and filtering is expected to remarkably increase as well.

To deal with the increase in the processing bandwidths, a transmission bandwidth between system modules or to the exterior should also be improved based on performance or functions required for applications.

However, unlike the remarkable increase in the required processing bandwidth in response to an increase in image resolutions to be processed and frame rates, a bandwidth for transmission thereof is limited.

For example, a bandwidth for storing an image in a frame buffer memory or extracting the image from the frame buffer memory may be limited according to a minimum burst length of a memory application.

To overcome this problem, a method of compressing images which are input and/or output in/out the frame buffer memory is taken into account, but fails to provide a remarkable bandwidth reduction effect.

Also, current frame buffer compression techniques are using a loss compression algorithm for obtaining high compression efficiency. However, the loss compression algorithm brings about a gradual decrease of quality and a change of a compression data format.

Due to the format change, a process of searching for a frame buffer memory for random access is made complicated, thereby increasing a throughput and a processing time again.

DISCLOSURE Technical Problem

The present invention has been made keeping in mind the drawbacks of the related art, and an object of the invention is to provide a video processing apparatus and method, capable of improving bandwidth efficiency even without degradation of quality, by use of lossless compression of a frame buffer.

Another aspect of the invention is to provide a video processing apparatus and method, which enables fast processing by providing a compression format of a frame buffer which is easy to access while maintaining a lossless state.

Also, another aspect of the invention is to provide a video processing apparatus and method, which enables maximizing effects of reducing bandwidth by diversifying compression methods for lossless compression of a frame buffer.

Technical Solution

In order to achieve the above object, there is provided an apparatus for processing a video according to one embodiment disclosed herein, the apparatus including an image receiving module to receive an encoded image, a filtering module to filter an image frame reconstructed from the encoded image, a block dividing module to divide the filtered image frame into a plurality of blocks, a compression module to selectively compress each of the plurality of blocks by determining each compression method for the blocks, package the compressed or uncompressed plurality of blocks into a predetermined unit, and a frame buffer memory to record the packaged data.

The present disclosure provides a method for processing a video in an image processing method for a video processing apparatus. The method for processing the video may include receiving an encoded image, filtering an image frame reconstructed from the encoded image, dividing the filtered image frame into a plurality of blocks, determining each compression method for the blocks, compressing selectively each of the plurality of blocks according to the compression method, packaging the compressed or uncompressed plurality of blocks into a predetermined unit, and recording the packaged data.

Meanwhile, the video processing method may be implemented as a computer-readable recording medium having a program executable on a computer.

Advantageous Effects

According to various embodiments, the present invention can provide an apparatus and method for processing a video, which is capable of improving processing efficiency by reducing bandwidths of a memory without degradation of quality, even for an image with a large number of pixels (4K 60 fps/120 fps, 8K 30 fps/60 fps/ . . . , etc.) to be processed per second.

Also, according to various embodiments, the present invention can provide an apparatus and method for processing a video, which is capable of improving processing performance by facilitating an access to a compressed frame buffer memory.

According to various embodiments, the present invention can provide an apparatus and method for processing a video, which is capable of reducing overhead of input and/or output information in a frame buffer memory and facilitating a system configuration and improving stability of the system by reducing a variation of bandwidths.

Also, according to various embodiments, the present invention can provide an apparatus and method for processing a video, which is capable of improving a performance of video processing, by selectively applying compression methods which may be different for each divided texture block, and by selecting a compression method to maximize effects for reducing bandwidth.

BRIEF DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram illustrating a configuration of a video decoding apparatus in accordance with one exemplary embodiment disclosed herein.

FIG. 2 is a block diagram illustrating a configuration of a video decoding apparatus in accordance with another exemplary embodiment disclosed herein.

FIG. 3 is a block diagram illustrating in more detail a configuration of a compression module of a video decoding apparatus in accordance with an exemplary embodiment disclosed herein.

FIG. 4 is a flowchart illustrating a video decoding method in accordance with an exemplary embodiment disclosed herein.

FIG. 5 is a view illustrating a compression performing module in detail according to an exemplary embodiment disclosed herein.

FIG. 6 is a flowchart illustrating operations of a compression performing module in detail according to an exemplary embodiment disclosed herein.

FIG. 7 shows examples of compression methods applied to compressing steps of the present invention according to an exemplary embodiment disclosed herein.

FIG. 8 is a view illustrating a frame buffer memory compressed according to an exemplary embodiment disclosed herein.

FIG. 9 is a view illustrating a compression method and grouping in accordance with an exemplary embodiment disclosed herein.

FIG. 10 is a view illustrating a lookup table in accordance with an exemplary embodiment disclosed herein.

FIG. 11 is a view comparing information stored in a frame buffer memory according to an exemplary embodiment disclosed herein with the related art configuration.

FIGS. 12 to 19 are experimental data illustrating improved processing efficiency in case of applying an exemplary embodiment of the present invention.

MODE FOR INVENTION

Hereinafter, description will be given in detail of the preferred embodiments of the present invention to be easily practiced by those skilled in the art to which the present invention belongs, with reference to the accompanying drawings. However, the present invention can be embodied in many different forms and should not be construed as limited to those exemplary embodiments set forth herein. Configurations or elements unrelated to the description are omitted in the drawings as to clarify the present invention and like reference numerals refer to like elements throughout.

It will be understood that when an element is referred to as being “connected with” another element, the element can be connected with the other element or intervening elements may also be present.

It will be understood that when an element is referred to as being “on” another element, the element can be directly on the another element or intervening elements may also be present between the two elements.

Unless specified otherwise, the terms “comprise,” “include,” “comprising,” and/or “including” specify the presence of elements and/or components, but do not preclude the presence or addition of one or more other elements and/or components. The terms “about” and “substantially” used in this specification to indicate degree are used to express a numerical value or an approximate numerical value when a mentioned meaning has a manufacturing or material tolerance and are used to prevent those who are dishonest and immoral from wrongfully using the disclosure of an accurate or absolute numerical value made to help understanding of the present invention. The term “stage (of doing)” of “stage of” used in this specification to indicate degree does not mean “stage for.”

It will be noted that the expression “a combination thereof” in a Markush statement means a mixture or combination of one or more selected from the group consisting of elements mentioned in the Markush statement, being construed as including one or more selected from the group consisting of the elements.

To encoding an actual picture (image) and a depth information map thereof, High Efficiency Video Coding (HEVC) providing optimal coding efficiency among existing video coding standards, which is under joint standardization by the Moving Picture Experts Group (MPEG) and Video Coding Experts Group (VCEG), may be used as an example, without being limited thereto. A decoding apparatus according to an embodiment of the present invention may perform decoding through various types (MPEG2, AVC, etc.) of codecs using a frame buffer memory.

Generally, a video processing apparatus may include an encoding apparatus or a decoding apparatus. The encoding apparatus includes an encoding process and a decoding process, and the decoding apparatus includes a decoding process. The decoding process of the decoding apparatus may be the same as the decoding process of the encoding apparatus. Thus, the following description will be made on the decoding apparatus

FIG. 1 is a block diagram illustrating a configuration of a video decoding apparatus in accordance with one exemplary embodiment of the present invention.

As illustrated in FIG. 1, a video decoding apparatus 100 disclosed herein includes an entropy decoding module 110, a dequantizer/inverse transformer 120, an adder 180, a filtering module 130, a compression module 140, a frame buffer memory 150, a decompression module 160, a motion compensation module 170, and an output module 190.

According to one exemplary embodiment of the present invention, the video decoding apparatus 100 may further include an intra/inter changeover switch and an intra prediction module. Here, this one exemplary embodiment illustrates in more detail a method of compressing and packaging a reference frame for generating a prediction block and a motion compensating process upon inter-frame prediction (in an inter mode) using the method.

The entropy decoding module 110 decodes a coded (encoded) bit stream transmitted from a video encoding apparatus to separate into an intra-prediction mode index, motion information, a quantization coefficient sequence, and the like. The entropy decoding module 110 may provide the decoded motion information to the motion compensation module 170.

The entropy decoding module 110 may provide the intra-prediction mode index to the motion compensation module 170 and the dequantizer/inverse transformer 120. Also, the entropy decoding module 110 may provide a dequantization coefficient sequence to the dequantizer/inverse transformer 120.

The dequantizer/inverse transformer 120 may transform the quantization coefficient sequence into a two-dimensional (2D) array of dequantization coefficients. The dequantizer/inverse transformer 120 may select one of a plurality of scanning patterns for transformation. The dequantizer/inverse transformer 120 may select one of the plurality of scanning patterns on the basis of at least one of a prediction mode (that is, one of intra prediction and inter prediction) of a current block and an intra prediction mode.

The dequantizer/inverse transformer 120 may receive the intra prediction mode from the motion compensation module 170 or the entropy decoding module 110.

The dequantizer/inverse transformer 120 recovers (or reconstructs) the quantization coefficients using a quantization matrix, which is selected from a plurality of quantization matrices, to the 2D array of dequantization coefficients. Different quantization matrices may be applied depending on a size of a current block to be reconstructed, and a quantization matrix may be selected for blocks of the same size based on the prediction mode of the current block and the intra prediction mode.

The dequantizer/inverse transformer 120 inverse-transforms the reconstructed quantization coefficients to reconstruct a residual block.

The adder 180 adds the residual block reconstructed by the dequantizer/inverse transformer 120 and a prediction block generated by the intra prediction module or the motion compensation module 170, thereby reconstructing a picture block.

The filtering module 130 filters off the reconstructed image, generated by the adder 180. Artifacts due to picture loss generated during a quantization process may be reduced by the filtering. For example, the filtering module 130 may perform a deblocking filtering process for removing a blocking effect occurring in a reconstructed picture, an adaptive offset application process for compensating for a difference value from an original picture by each pixel, and an adaptive loop filtering process for compensating for a difference value from an original picture by each coding unit.

The frame buffer memory 150 is a memory to store a local decoding picture which has been subjected to filtering by the filtering module 130. The frame buffer memory 150 may store a plurality of frames or pictures for motion compensation. Data formats of stored and output frames may be changeable by the compression module 140 and the decompression module 160.

The frame buffer memory 150, for example, may include at least one of storage media, such as a flash memory type, a hard disk type, a multimedia card micro type, a card memory type (e.g., SD or XD memory), RAM and ROM (e.g., EEPROM, etc.).

The compression module 140 is a module to compress frames stored in the frame buffer memory 150 according to the video processing method of the present invention. The decompression module 160 is a module to extract a random access target frame from the frame buffer memory 150, in response to a request of the motion compensation module 170, and to perform a decompression (inverse compression) for the target frame.

Specifically, the compression module 140 according to an exemplary embodiment of the present invention may perform lossless compression and uncompression to prevent degraded quality. Also, the compression module 140 may generate compression and information and separately manage the compression information in the form of a lookup table to realize a bandwidth reduction.

For example, the compression module 140 may receive the loop-filtered frame, perform an adaptive entropy process using DPCM with respect to the frame, and thus acquire losslessly-compressed texture segments.

The compression module 140 may generate compression information, which includes offset information related to each of the texture segments, package the texture segments by a burst length, and store the packaged texture segments in the frame buffer memory 150 along with the compression information. The frame buffer memory 150 may be an external memory which is connected through an AXI bus interface.

By virtue of the compression processing of the compression module 140 and the operation of the decompression module 160 according to the exemplary embodiment disclosed herein, random access of the motion compensation module 170 to the frame buffer memory 150 can be facilitated.

Also, 50% of the bandwidth reduction efficiency can result from the lossless compression and the storage based on the burst length according to the exemplary embodiment disclosed herein. The configuration of the compression module 140 will be explained later.

The motion compensation module 170 reconstructs an intra prediction mode of a current block on the basis of the intra prediction mode index received from the entropy decoding module 120, and generates a prediction block according to the reconstructed intra prediction mode.

Specifically, the motion compensation module 170 may randomly access the compressed picture stored in the frame buffer memory 150 through the decompression module 160 on the basis of motion vector information, and accordingly generate a prediction block for a current block. When a point-precision motion compensation is applied, a selected interpolation filter is used to generate the prediction block. The generated prediction block may be transferred to the adder 180.

Meanwhile, although not illustrated, the intra/inter changeover switch may provide the prediction block, which has been generated by one of the intra prediction module and the motion compensation module 170, to the adder 180 based on an encoding mode.

In order to generate the prediction block for the motion compensation, the motion compensation module 170 may further include a demultiplexer, a motion information encoding mode determination unit, a merge mode motion information decoding unit, an advanced motion vector prediction (AMVP) mode motion information decoding unit, a prediction block generation unit, a residual block decoding unit, and a reconstructed block generation unit.

The motion information includes a reference picture index and a motion vector. The reference picture index indicates any one picture previously encoded and reconstructed.

When a current block is subjected to unidirectional inter predictive encoding, the motion information indicates one of reference pictures included in list 0 (L0). On the other hand, when the current block is subjected to bidirectional predictive encoding, the motion information may include a reference picture index indicating one of the reference pictures of the list 0 (L0), and a reference picture index indicating one of reference pictures of list 1 (L1).

Also, when the current block is subjected to the bidirectional predictive encoding, the motion information may include one or two pictures among reference pictures included in a combined list (LC) of the list 0 and the list 1.

The motion vector indicates a position of a prediction block within a picture indicated by each reference picture index. The motion vector may be a pixel unit (integer unit) or a sub pixel unit.

For example, the motion vector may have a resolution of ½, ¼, ⅛ or 1/16 pixel. When the motion vector is not an integer unit, the prediction block is generated from integer pixels.

The demultiplexer demultplexes encoded motion information and encoded residual signals from a bit stream received. The demultiplexer transmits the demultiplexed motion information to the motion information encoding mode determination unit, and the demultiplexed residual signals to the residual block decoding unit.

The motion information encoding mode determination unit determines a motion information encoding mode of a current block. The motion information encoding mode determination unit may determine the motion information encoding mode of the current block according to skip_flag of a bit stream received. The motion information encoding mode may include, but not limited to, at least one of a skip mode, a merge mode and an AMVP mode.

The skip mode may be applied when a skip candidate having the same motion information as motion information on a current block is present and a residual signal is 0. Also, the skip mode may be applied when the current block has the same size as a coding unit. The current block may be regarded as a prediction unit.

The merge mode may be applied when a merge candidate having the same motion information as motion information on a current block is present. The merge mode may be applied when the current block has a different size from a coding unit or when a residual signal is present if the current block has the same size as the coding unit. The merge candidate may be the same as the skip candidate.

The AMVP mode may be applied when the skip mode and the merge mode are not adopted. An AMVP candidate having the most similar motion vector to a motion vector of a current block is selected as an AMVP predictor.

The prediction block generation unit generates a prediction block of a current block using the reconstructed motion information. When the motion vector is an integer unit, the prediction block generation unit may generate a prediction block of a current block by copying a block, which corresponds to a position represented by a motion vector in a picture indicated by a reference picture index.

However, when the motion vector is not an integer unit, the prediction block generation unit may generate pixels of the prediction block from integer pixels within the picture indicated by the reference picture index. In this instance, in a luma pixel, a predictive pixel may be generated using a 8-tap interpolation filter. In a chroma pixel, a predictive pixel may be generated using a 4-tap interpolation filter.

The residual block decoding unit performs entropy decoding with respect to residual signals. The residual block decoding unit inversely scans entropy-decoded coefficients so as to generate a 2D block of quantized coefficients. Different types of inverse scanning may be used depending on entropy decoding methods.

That is, different inverse scanning methods may be used for the inter predicted residual signals depending on CABAC-based decoding and CAVLC-based decoding. For example, diagonal raster inverse scanning may be available for CABAC-based decoding, while zigzag inverse scanning may be available for CAVLC-based decoding.

Also, different inverse scanning methods may be decided depending on a size of the prediction block.

The residual block decoding unit dequantizes a generated coefficient block using a dequantization matrix. A quantization parameter is reconstructed to derive the quantization matrix. A quantization step size is reconstructed by each coding unit of a predetermined size or larger. The predetermined size may be 8×8 or 16×16.

The residual block decoding unit may inversely transform the dequantized coefficient block to reconstruct a residual block. The reconstructed block generation unit may add the prediction block generated by the prediction block generation unit and the residual block generated by the residual block decoding unit.

In this manner, a current block may be reconstructed by using the reconstructed prediction block of the current block and the decoded residual block of the current block. The reconstructed current block may then be filtered and compressed to be stored in the frame buffer memory 15. Such current block may be transferred to the motion compensation module 170 after being decompressed or output to the output module 190.

The output module 190 may process data output from the frame buffer memory 150, and display or externally transmit the processed data. An image signal, a data signal, an OSD signal and the like, processed in the output module 190 may be converted into R, G, and B signals, respectively, thereby being generated as driving signals.

Also, the output module 190 may further include a converter to reconstruct data compressed by the compression module 140 into an image signal. The output module 190 may include PDP, LCD, OLED, flexible display, 3D display and the like to display the converted image signal.

FIG. 2 is a block diagram illustrating a configuration of a video decoding apparatus in accordance with another exemplary embodiment disclosed herein.

As illustrated in FIG. 2, a video decoding apparatus 100 according to another embodiment according to the present invention includes an entropy decoding module 110, a dequantizer/inverse transformer 120, an adder 180, a filtering module 130, a compression module 140, a frame buffer memory 150, an decompression module 160, a motion compensation module 170, and an output module 190. The video decoding apparatus 100 may further include an uncompression processing module 195.

In FIG. 2, the other components except for the compression module 140, the uncompression processing module 195 and the output module 190 perform similar operations to those illustrated in FIG. 1, so detailed description thereof will be omitted.

As illustrated in FIG. 2, the uncompression processing module 195 included in the another embodiment disclosed herein may transfer an image, which has been filtered by the filtering module 130, directly to the output module 190 without passing through the compression module 140.

Specifically, the uncompression processing module 195 may transfer an image frame, which has been subjected to decoding and filtering, to the output module 190 in a line-by-line writing manner. To this end, the uncompression processing module 195 may include a separate buffer memory. A burst length of data may be predetermined as 64 bytes, 128 bytes or the like.

In this manner, when a pure YUV image signal which is uncompressed is transferred to the output module 190, the output module 190 may output the image signal directly through a display or the like even without performing the decompression (or inverse compression). Also, the output module 190 may easily perform post-processing such as scaling by using the pure YUV image signal, which may result in extending a utilization range.

Therefore, the exemplary embodiment illustrated in FIG. 2 may not include a separate decompression processor, and the compression module 140 may compress only a reference frame which is used for motion compensation and store the compressed reference frame in the frame buffer memory, thereby improving video processing efficiency.

Hereinafter, description will be given in detail of the configuration of the compression module of the video encoding apparatus in accordance with an embodiment disclosed herein.

In accordance with one exemplary embodiment of the present invention, the compression module 140 may include a picture buffer 141, a block dividing module 142, a compression performing module 143, a packaging module 144, a compression data managing module 145, a compression flag generator 146, a group identifier generator 147, and a start offset generator 148.

The picture buffer 141 may receive an image signal which has been filtered and output from the filtering module 130, and store the image signal in a buffer by each frame.

The block dividing module 142 acquires each frame from the picture buffer 141, and divides the acquired frame into a plurality of compression blocks according to a size of a preset compression unit. In this embodiment of the present invention, the size of the compression unit may be fixed, and each frame may be divided into 16×4 blocks, for example.

The compression performing module 143 decides whether or not to compress each block, and perform a lossless compression for blocks which have been decided to be compressed.

Specifically, according to the exemplary embodiment of the present invention, the compression performing module 143 may select one of lossless compression or uncompression for each divided block.

For example, the compression performing module 143 may select, as a compression method, a lossless variable-length compression method, such as a DPCM entropy coding method.

However, the compression performing module 143 may compare a size of data subjected to the variable-length compression with a size of uncompressed data, and select the uncompression method when the size of the data subjected to the variable-length compression is greater than the size of the uncompressed data.

In this manner, the compression performing module 143 may apply different compression methods for each block, and in some cases, employ the uncompression processing.

Also, the compression performing module 143 may select a method which can provide optimal bandwidth efficiency from the compression or the uncompression. Specifically, in order to overcome a degradation of quality due to the loss compression and a reduction of bandwidth efficiency due to an increased calculation, which are caused in the related art, the compression performing module 143 may also select a method for maximizing only the reduced bandwidth efficiency, irrespective of a compression degree.

Accordingly, the compression performing module 143 may transfer information indicating whether or not to compress a current block to the compression flag generator 146.

Then, the compression flag generator 146 may generate a compression flag which indicates whether or not to compress the current block. The compression flag, for example, may have a form of 1-bit flag indicating compression or uncompression. The compression flag may correspond to each block, and be transferred to the group identifier generator.

Meanwhile, the packaging module 144 groups data compressed by the compression performing module 143 for each block, and packages the grouped data.

The packaging module 144 may arrange the compressed blocks in one line, and group the arranged blocks on the basis of a burst length of the frame buffer memory 150. Each compressed block set grouped in the packaging module 144 may be referred to as a burst group (BG).

For example, a burst length may be 128 bytes. In this instance, the packaging module 144 groups the compressed blocks to be included in a group based on the 128-byte burst length for packaging.

The packaging module 144 transfers the packaged texture data to the compression data managing module 145 for each burst group. The compression data managing module 145 may perform writing for the frame buffer memory 150 for each burst group. This may bring about a reduction of a bandwidth variation resulting from the variable-length compression. Also, since compression efficiency of the lossless compression is maintained, the packaging module 144 can maintain an improved state of bandwidth efficiency (or a reduced state of bandwidths required) while maintaining system stability.

Also, the packaging module 143 may generate packaging information, which indicates a group to which each block belongs in response to being packaged and a position within the group, and transfer the packaging information to the group identifier generator 147.

The group identifier generator 147 may generate a group identifier which indicates a group, to which a currently-processed block belongs, from the packaging information. The group identifier may include a 8-bit burst group identifier (ID), for example.

The burst group identifier may indicate a relative position of each group with respect to a specific base address.

The start offset generator 148 may generate start offset information which indicates a start position of a current block within a group on the basis of the packaging information. The offset information, for example, may include 7-bit start byte offset information. The start byte offset information may indicate a relative start position of each block.

Meanwhile, the compression flag generator 146, the group identifier generator 147 and the start offset generator 148 may transfer the compression flag, the group identifier and the start offset information, which are related to the current block, to the compression data managing module 145, respectively.

The compression data managing module 145 may generate lookup table information by combining the compression flag, the group identifier and the start offset information, and record the generated lookup table information in the frame buffer memory 150.

In more detail, the compression data managing module 145 may generate the lookup table information corresponding to each block. The compression data managing module 145 may generate 2-byte lookup table information by using 1-bit compression flag, 8-bit group identifier and 7-bit offset information.

The generated lookup table information and the packaged data may be recorded in the frame buffer memory 150. As aforementioned, the packaged data may be recorded in the frame buffer memory 150 on the basis of the burst length.

When the 2-byte lookup table information is accumulated by each burst length (for example, 128 bytes of lookup table information for 64 blocks are accumulated), the compression data managing module 145 may record the lookup table information in the frame buffer memory 150. Therefore, the recording of the lookup table information may be maintained based on the burst length of the memory. This may result in maintaining the improved bandwidth without change and improving system stability.

That is, in the embodiment of the present invention, in the packaging module 144, the unit of packaging the compressed texture block may be the same as the unit of recording the lookup table information. Also, each unit may correspond to the burst length of the frame buffer memory 150. This configuration may cause the improvement of the bandwidth efficiency.

The compression data managing module 145 may refer to lookup table information relating to a previous block in order to generate lookup table information relating to a current block. In this instance, for blocks belonging to the same group, the same data cannot be repetitively processed, thereby reducing an amount of data processed.

The frame buffer memory 150 records data output from the thusly-configured compression module 140. Specifically, the compression data managing module 145 may control and manage the data recorded in the frame buffer memory 150.

Accordingly, the frame buffer memory 150 may store and maintain the compressed texture blocks, which have been packaged, by each frame, and also separately store and maintain lookup table information corresponding to each frame.

Also, the lookup table information may include 2-byte information for 16×4 block each. In one embodiment, the lookup table information may include burst group identification information and start offset information, which may allow for representing an offset, starting from a base address corresponding to each preset burst group, other than every address of the frame buffer memory 150.

Here, information related to the base address corresponding to each burst group may be separately stored and managed by the decompression module 160 and the compression module 140, respectively. Therefore, the decompression module 160 does not have to use all of the memory addresses to access the frame buffer memory 150.

Accordingly, the decompression module 160 can fast access a specific block even when it receives only the lookup table information from the frame buffer memory 150.

Also, by virtue of presetting the burst group identifiers and the corresponding base addresses and transmitting and receiving only the lookup table information associated therewith, overhead caused due to the transmission and reception of all of the values of the memory addresses can be reduced. This may result in improvement of data processing efficiency and reduction of bandwidths.

Meanwhile, the lookup table information included in the frame buffer memory 150 may be transferred to the decompression module 160. The decompression module 160 may access a specific position of the frame buffer memory 150 with reference to the lookup table information, thereby performing random access in response to a request of the motion compensation module 170. To this end, the decompression module 160 may include a first cache which requests the lookup table information from the buffer memory 150 and stores and manages the lookup table information.

In more detail, when a specific frame is identified in response to the request of the motion compensation module 160, the decompression module 160 may acquire group identification information, start offset information and a compression flag relating to each of blocks corresponding to the frame with reference to the lookup table information.

The decompression module 160 may then access a specific address of the frame buffer memory 150 corresponding to each block on the basis of the group identification information and the start offset information. Accordingly, in the embodiment according to the present invention, a problem that a long time is taken to search for a specific block, which has been caused in the related art compression method, can be overcome, and fast processing can be carried out while maintaining a bandwidth reduction effect.

The decompression module 160 may determine whether or not to decompress text blocks according to the compression flags, and if required, perform the decompression.

The decompression module 160 may reconstruct the decompressed blocks to generate frame data requested by the motion compensation module 170. The decompression module 160 may then transfer the generated frame data to the motion compensation module 170.

Afterwards, the motion compensation module 170 may generate the prediction block based on the motion vector information, as aforementioned, and transfer the generated prediction block to the adder 180 to perform decoding of the image through the motion compensation in a sequential manner.

Hereinafter, description will be given of a video processing method according to an exemplary embodiment of the present invention, with reference to FIGS. 4 to 11.

As illustrated in FIG. 4, the video processing apparatus 100 receives a bit stream including encoded image data, and entropy-decodes the received bit stream (S100).

The video processing apparatus 100 performs dequantization and inverse transformation for the entropy-decoded image data (S110).

As aforementioned, the entropy decoding module 110 may decode the encoded bit stream which is transmitted from a video encoding apparatus, to separate into an intra prediction mode index, motion information, a quantization coefficient sequence and the like. The entropy decoding module 110 may provide the decoded motion information to the motion compensation module 170. The entropy decoding module 110 may also provide a dequantization coefficient sequence to the dequantizer/inverse transformer 120.

The dequantizer/inverse transformer 120 then transforms the quantization coefficient sequence into a 2D array of dequantization coefficients, selects one of a plurality of scanning patterns based on at least one of a prediction mode (i.e., one of intra prediction and inter prediction) of a current block and an intra prediction mode, and reconstructs the quantization coefficients using a quantization matrix, which is selected from a plurality of quantization matrices, to the 2D array of dequantization coefficients. The dequantizer/inverse transformer 120 inversely transforms the reconstructed quantization coefficients to reconstruct a residual block.

Afterwards, the video processing apparatus 100 reconstructs the image using the residual block and a prediction block, and filters the reconstructed image (S120).

As aforementioned, the adder 180 may reconstruct an image block by adding the residual block reconstructed by the dequantizer/inverse transformer 120 and the prediction block generated by the intra prediction module or the motion compensation module 170. The filtering module 130 may filter off the reconstructed image generated by the adder 180. The detailed filtering method has been described.

Afterwards, the video processing apparatus 100 divides the filtered frame by each block (S130).

The compression module 140 may divide the image frame into blocks, in order to compress and package image frame textures filtered by the filtering module 130 and record the packaged image frame textures in the frame buffer memory 150.

The video processing apparatus 100 decides whether or not to compress each divided block and a compression method (S140), and performs the compression for each block according to the decided method (S150). The video processing apparatus 100 then packages the compressed texture blocks (S160).

Afterwards, the video processing apparatus 100 stores lookup table information and packaged data into frame buffer memory (S170).

FIG. 5 is a view illustrating a compression performing module 143 of the video processing apparatus 100 in detail according to an exemplary embodiment disclosed herein.

As shown in FIG. 5, the compression performing module 143 may include a pre-compression performing module 1431, a bandwidth comparing module 1432, a compression determining module 1433, a compression method determining module 1434 and a compression result output module 1435.

The pre-compression performing module 1431, when the divided texture blocks received, performs lossless compressions according to each method based on predetermined a plurality of compression methods.

The pre-compression performing module 1431, for performing lossless compression, may use entropy coding and may compress difference values between pixels in the blocks by performing a variable-length coding, such as a DPCM entropy coding method. The pre-compression performing module 1431 performs a lossless compression by selecting at least one method each of the methods.

Especially, the pre-compression performing module 1431 selectively performs a variable-length coding by using various code words. The pre-compression performing module 1431 performs a variable-length coding to the received texture block by each order number, by using predetermined cord words according to a plurality of order numbers. Thus, several times of lossless compressions may be performed to the texture block.

For example, a variable-length coding using exponential golomb code can be performed by the pre-compression performing module 1431, so the pre-compression performing module 1431 may perform N+1 times of variable-length coding compressions for each order number by using code words according to from 0th order exponential golomb code to Nth exponential golomb code.

Also, the bandwidth comparing module 1432 compares and analyzes amounts of bandwidth consumptions according to the each compression method. The bandwidth comparing module 1432 can determine occupied amounts of bandwidths for each compression result by each compression method which is pre-performed in the pre-compression performing module 1431. The bandwidth comparing module 1432 may transfer the determined and analyzed results to the compression determining module 1433

The compression determining module 1433 determines whether compress or not (uncompressed) based on the determined results of the bandwidth comparing module 1432.

The compression determining module 1433 may compare the lowest bandwidth consumption amounts in compression results for each compression method and the raw bandwidth consumption for transferring entire of the divided texture block itself, and may determine uncompressed when the raw bandwidth consumption is lower than the lowest bandwidth consumption of the compression results.

Also, the compression determining module 1433 may determine compression when the raw bandwidth consumption is higher than in case of the compressions. And the compression flag generator 146 can generate the compression flag based on the determined results as compressed or uncompressed.

In case of the compression, a compression method determining module 1434 selects the best compression method for the bandwidth. The compression method determining module 1434 may select a compression method which having lowest bandwidth consumption in the analyzed results from the bandwidth comparing module 1432.

For example, pre-compression performing module 1431 may perform adaptive variable-length compression methods in several times by the each order number using the exponential golomb codes.

Then the compression method determining module 1434 may determine a certain adaptive variable-length coding using the exponential golomb code of a certain order number as the compression method when the bandwidth consumption of the certain order number is lowest of the compressed results of using the exponential golomb codes.

The compression result output module 1435 receives compression results according to determined compression methods from the pre-compression performing module 1431, and outputs to the packaging module 144.

The compression result output module 1435 may receive compression results data being performed the variable-length coding using the determined order number of the exponential golomb code from the pre-compression performing module 1431. After that, the compression result output module 1435 may output the received data to the packaging module 144, or may add compression information to the received data representing which code is used and output the added data to the packaging module 144. The compression information can be included in lookup table information separately as a compression flag.

Also, in the uncompressed case, the compression result output module 1435 may receive the uncompressed original texture block, and may output it to the packaging module 144.

FIG. 6 is a flowchart illustrating operations of a compression performing module in detail according to an exemplary embodiment disclosed herein.

As shown in FIG. 6, the compression performing module 143 receives divided texture blocks (S200).

The compression performing module 143 may receive divided texture blocks from the block dividing module 142. Also, the compression performing module 143 may control the received texture blocks to be transferred to the pre-compression performing module 1431.

After, the compression performing module 143 applies compressions by each order number for the received blocks (S201).

The compression performing module 143 may apply adaptive variable-length coding to the blocks by the each order number according to the code words for the each order number of the exponential golomb codes. It makes that lossless compressions is pre-performed.

Then, the compression performing module 143 may analyze efficiency of bandwidths for each order number (S203).

The compression performing module 143 may compare and analyze the efficiencies of bandwidth for each order number of exponential golomb code through the bandwidth comparing module 1432.

The bandwidth comparing module 1432 may determine the compressed results for the each order of exponential golomb code is how efficient for reducing bandwidth comparing with the original bandwidth. The bandwidth comparing module 1432 may transfer the determined results to the compression determining module 1433.

Especially, the efficiency for reducing bandwidth may be related to maximum number of bits to represent the compressed data. Therefore, the bandwidth comparing module 1432 may determine the efficiency is higher during a requiring number of bits for transferring the compressed data become smaller. Thus, compression of the present invention may be represented as compression of bitrate, and the compression of the present invention may not be related to the compression of real data size.

After that, the compression performing module 143 determines whether the efficiency of reducing bandwidth for each order number is higher than a predetermined value (S205). The predetermined value may be determined based on the bandwidth of the method of uncompressed.

Then, the compression performing module 143 determines the blocks to be uncompressed when the efficiency of reducing bandwidth is not higher than the value (S209).

Also, the compression performing module 143 determines most efficient order number of exponential golomb code to a compression order number when the efficiency of reducing bandwidth is higher than the value (S207).

The compression performing module 143 may determine the compression order number through the compression method determining module 1434. The compression method determining module 1434 may select the best order number of the exponential golomb code having most efficiency for reducing bandwidth in the compression results of each order number of the exponential golomb codes.

Then, the compression performing module 143 compresses the texture blocks currently received (S211), and outputs the compression flag and compressed (or uncompressed) blocks (S213).

The compression performing module 143 may receive the compression results data according to the order number of exponential golomb code previously determined from the pre-compression performing module 1431 and output to the packaging module 144.

As explained, the compression result output module 1435 may receive compression results data variable-length coded by the determined order number of exponential golomb code from the pre-compression performing module 1431.

Then, the compression result output module 1435 may bypass the received data to the packaging module 144, or output the data to the packaging module 144 by adding compression information into the data representing that which exponential golomb codes are used. The compression information may be included in the compression flags, therefore included in the lookup table information.

Meanwhile, the compression performing module 143 may transfer original uncompressed texture blocks to the packaging module 144 by bypassing when it is determined to be uncompressed.

FIG. 7 shows examples of compression methods applied to compressing steps of the present invention according to an exemplary embodiment disclosed herein.

As shown in FIG. 7, the compression performing module 143 may perform compressions by selecting each different method (EG0˜EG3) according to properties of the blocks, and may analyze bandwidths consumed for transferring or recording to memory the compressed results data of the each method. Here, as shown in FIG. 7, the compression methods may be variable-length compression methods using order numbers of exponential golomb codes which are different from each other.

Then, the compression methods may be predetermined. For example, the compression performing module 143 may determine one of predetermined EG0 and EG3 to the compression method by comparing each case. Also, the compression methods 143 may determine one of EG0, EG1, EG2 and EG3 as the compression method by comparing all cases.

Also, the compression performing module 143 may performs 2-dimension DPCM (differential pulse code modulation) to each block by horizontal and vertical direction, and may performs variable-length compressions for the result values by each exponential golomb code (EG0˜EG3).

According to the present invention as said above, because of the variety of patterns of divided blocks, the efficiencies of reducing bandwidth may be different to each other by each compression method. Thus, compression methods may be different to each other according to each pattern or property of the each block.

Therefore, amounts of reducing bandwidth are maximized because most efficient compression methods for reducing bandwidth are selected for each block.

FIGS. 8 to 11 are views illustrating a configuration of the divided and packaged blocks according to an exemplary embodiment of the present invention.

(A) of FIG. 8 illustrates a whole frame divided into blocks. As illustrated in (A) of FIG. 8, each frame may be divided into blocks each having a preset size. The preset size may be variable. 16×4 block is assumed in the embodiment disclosed herein. If a size of a picture is not a multiple of the preset size, an extra value of a block corresponding to an edge may be set to the same value as an edge pixel.

Meanwhile, as illustrated in FIG. 9, each of the divided blocks may be selectively compressed. Here, a compression method, as aforementioned, may be selected from one of uncompression, and variable-length coding compression using DPCM, on the basis of reduction or non-reduction of bandwidths.

Each compressed block may be packaged into each group according to a burst length. The packaging module 144 in this embodiment disclosed herein, as illustrated in a bottom of FIG. 9, may package the blocks by designating burst groups, respectively. A size of each burst group may correspond to a burst length of the frame buffer memory 150, and a group identifier may be assigned to each group.

Also, the packaging unit 144, as illustrated in FIG. 10, generates lookup table information corresponding to each block. The lookup table information may include information for identifying each divided block and a compressed or uncompressed state thereof from the packaged data. For example, the lookup table information may include 2-byte data containing 8-bit group identifier information, 7-bit start offset information and 1-bit compression flag. The lookup table information may be stored separately in the frame buffer memory 150.

Referring back to FIG. 8, (B) of FIG. 8 illustrates a storage space of the frame buffer memory 150 in which the packaged data is recorded in a sequential manner. As compared with the whole frame of (A) of FIG. 8, the whole frame of (B) of FIG. 8 can store the compressed texture data by each block.

Here, numbers 0, 1, 2 and 3 at the left of the drawing may indicate base addresses corresponding to burst groups, respectively. Each block may be identified according to burst group identification information and an offset value. A region in which no texture data is present in each burst group may be filled with dummy data.

Meanwhile, (C) of FIG. 8 illustrates lookup table information which is stored separately in the frame buffer memory 150. The lookup table information may be filled with 2-byte values corresponding to respective blocks, and arranged in the order of blocks constructing the whole frame.

Therefore, the decompression module 160 may receive only the lookup table information, as illustrated in (C) of FIG. 8, to identify texture blocks from the frame buffer memory 150, and can reconstruct an original frame by performing decompression and reconstruction for the blocks.

Also, as aforementioned, the transmission and reception of only the lookup table information may result in a reduction of overhead caused due to transmission and reception of every memory address. Consequently, improvement of data processing efficiency and reduction of bandwidths can be acquired.

FIG. 11 is a view illustrating a size variation of the frame buffer memory 150 according to an exemplary embodiment of the present invention, which illustrates a configuration of the frame buffer memory 150 for reducing bandwidths.

A left block diagram illustrates a typical frame buffer, and a right block diagram illustrates the frame buffer memory 150 which is compressed and packaged according to the exemplary embodiment of the present invention. As illustrated in FIG. 11, unlike the related art frame buffer which stores decoded Y, Cb and Cr values, the frame buffer memory 150 according to the exemplary embodiment of the present invention may include compressed Y texture data, compressed C texture data, lookup table information relating to the compressed Y, and lookup table information relating to the compressed C.

The frame buffer memory 150 according to the exemplary embodiment of the present invention may include a buffer for storing the lookup table information. A size of the buffer may be decided depending on an image frame size. For example, when 2-byte lookup table information is generated for a block of 16×4 pixels, a buffer size for lookup table information may be decided as 1/32*(frame size) for one frame. Therefore, the frame buffer memory 150 according to the embodiment of the present invention may further include an additional buffer region as compared with the conventional frame buffer.

Also, when the 2-byte lookup table information is generated for the block of 16×4 pixels, a region-based buffer size of the frame buffer memory 150 may be derived by the following formulas.

Compressed data for Luma: (PicX+15)/16*16*PicY

Compressed data for Chroma: (PicX/2+15)/16*16*PicY

Lookup table for Luma: (PicY+15)/16*(PicX+255)/256*128

Lookup table for Chroma: (PicY+15)/16*(PicX/2+255)/256*128

Description will be back to FIG. 4.

Afterwards, the video processing apparatus 100 transfers the lookup table information and the packaged data to the decompression module 160 according to the reference frame request of the motion compensation module 170 (S180).

The decompression module 160 of the video processing apparatus 100 randomly accesses blocks constructing the corresponding frame using the lookup table information, and performs decompression of the blocks and frame reconstruction, thereby obtaining the reference frame (S190).

The video processing apparatus 100 transfers the obtained reference frame to the motion compensation module 170 (S195).

FIGS. 12 to 19 illustrate test data indicating results obtained by applying the video processing method in accordance with the exemplary embodiment of the present invention.

To test the bandwidth reduction effect of the video processing method according to the embodiment disclosed herein, various HEVC test sequences were used and classified into A to F according to image sizes. Bandwidths were estimated as a total amount of frame data in which reading/writing of a memory was performed through a 128-bit bus interface during a decoding process (while reading/writing of the reference frame was performed for motion compensation). Also, four different qp values (22, 27, 32 and 37) for each sequence were used.

Considering the whole results of FIGS. 12 to 19, it was understood that the video processing method according to the exemplary embodiment disclosed herein could save 56% of bandwidths on average rather than pure bandwidths when a loop filter module performs writing. Also, it was understood that the video processing method according to the exemplary embodiment of the present invention could save 59% of bandwidths on average rather than pure bandwidths when a motion compensation module performs writing.

FIGS. 12 and 13 illustrate compensation results in a classifying manner of average bandwidths due to a frame buffer compression of the video processing method according to the embodiment disclosed herein and pure bandwidths without compression performed.

FIG. 12 illustrates a bandwidth reduction rate when the decoding apparatus illustrated in FIG. 1 processes a video in accordance with one exemplary embodiment of the present invention, and FIG. 13 illustrates a bandwidth reduction rate when the decoding apparatus illustrated in FIG. 2 processes a video in accordance with another exemplary embodiment of the present invention.

Meanwhile, FIGS. 14 to 17 are graphs visually illustrating comparison results according to each condition as FIGS. 12 to 13. As can be understood through the graphs, a remarkable bandwidth reduction can be obtained according to the embodiment of the present invention.

FIG. 18 also illustrates maintenance of bandwidth stability as well as the bandwidth reduction according to the video processing method according to the exemplary embodiment of the present invention. With regard to results of the frame buffer compression (line marked with FBC) according to the embodiment of the present invention in FIG. 18, it can be understood that an almost uniform value is maintained in spite of the drastic change of uncompressed image information while about 70% of bandwidths is reduced rather than uncompression (Uncomp). Therefore, the present invention can maintain bandwidth stability and derive an advantageous result for cache design.

FIG. 19 illustrates that an average bandwidth upon the frame buffer compression (line marked with FBC) is reduced below 20% rather than a bandwidth of uncompressed (Uncomp) data. The embodiment according to the present invention can allow for processing high-resolution image while maintaining image quality by virtue of the bandwidth reduction.

The aforementioned methods according to the present invention can be written as computer programs to be implemented in a computer and be recorded in a computer readable recording medium. Examples of the computer readable recording medium include read-only memory (ROM), random-access memory (RAM), CD-ROMs, magnetic tapes, floppy disks, optical data storage devices, and carrier waves, such as data transmission through the Internet.

The computer readable recording medium can also be distributed over network coupled computer systems so that the computer readable code is stored and executed in a distributed fashion. Also, functional programs, codes, and code segments for accomplishing the present invention can be easily construed by programmers skilled in the art to which the present invention pertains.

While exemplary embodiments of the present invention have been shown and described, the present invention is not limited to the described exemplary embodiments. Instead, it would be appreciated by those skilled in the art that various changes and modifications may be made to these exemplary embodiments without departing from the spirit and scope of the invention as defined by the appended claims, and these changes and modifications are not construed as being separated from the technical idea and prospects of the present invention. 

1. A video processing apparatus comprising: an image receiving module that is configured to receive encoded data; a filtering module that is configured to filter an image frame reconstructed from the encoded image; a block dividing module that is configured to divide the filtered image frame into a plurality of blocks; a compression module that is configured to selectively compress each of the plurality of blocks by determining each compression method for the blocks, package the compressed or uncompressed plurality of blocks into a predetermined unit; and a frame buffer memory that is configured to record the packaged data and the lookup table information.
 2. The apparatus of claim 1, the compression module comprising: a pre-compression performing module that is configured to perform pre-compression by each compression method for determining the compression method.
 3. The apparatus of claim 1, the compression module comprising: a bandwidth comparing module that is configured to analyze efficiency of reducing bandwidth for each compression method to determine the compression method.
 4. The apparatus of claim 1, wherein the compression method comprising only lossless compression methods.
 5. The apparatus of claim 1, wherein the compression methods are differently determined by properties of the blocks each other.
 6. The apparatus of claim 1, wherein the compression methods comprising variable-length coding methods using a plurality of exponential golomb codes different from each other.
 7. The apparatus of claim 1, wherein the predetermined unit into which the compressed plurality of blocks are packaged is the same as a burst length of the frame buffer memory.
 8. The apparatus of claim 1, further comprising: an uncompression processing module that is configured to process an image signal output from the filtering module through uncompression and transfer the uncompressed image signal; and an output module that is configured to display the uncompressed image.
 9. A video processing method for a video processing apparatus, the method comprising: receiving an encoded image; filtering an image frame reconstructed from the encoded image; dividing the filtered image frame into a plurality of blocks; determining each compression method for the blocks; compressing each of the plurality of blocks according to the compression method; packaging the compressed plurality of blocks into a predetermined unit; and recording the packaged data and the lookup table information.
 10. The method of claim 9, the packaging comprising: performing pre-compression by each compression method for determining the compression method.
 11. The method of claim 9, further comprising: analyzing efficiency of reducing bandwidth for each compression method to determine the compression method.
 12. The method of claim 9, wherein the compression method comprising only lossless compression methods.
 13. The method of claim 9, wherein the compression methods are differently determined by properties of the blocks each other.
 14. The method of claim 9, wherein the compression methods comprising variable-length coding methods using a plurality of exponential golomb codes different from each other.
 15. The method of claim 9, wherein the predetermined unit into which the compressed plurality of blocks are packaged is the same as a burst length of the frame buffer memory.
 16. A nonvolatile recording medium with a program recorded therein for executing the method according to claim 9 in a computer. 